<!DOCTYPE html><html class="appearance-light" lang="zh-CN"><head><meta charset="UTF-8"><title>Hexo博客多线部署 GitHub Gitee Coding 云服务器</title><meta name="description" content="如你所见, 希望做个能言善道的人"><meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no, initial-scale=1"><!-- Google Analytics --><!-- End Google Analytics -->
<!-- Baidu Analytics --><!-- End Baidu Analytics --><link rel="icon" href="/images/touxiang.jpg"><link rel="stylesheet" href="/style/common/bulma.css"><link rel="stylesheet" href="/style/base.css"><link rel="stylesheet" href="/style/icon.css"><link rel="stylesheet" href="/style/common/helper.css"><script src="/js/common.js"></script><link rel="stylesheet" href="/style/post.css"><link rel="stylesheet" href="/style/themes/highlight-theme-light.css"><script src="/js/highlight.pack.js"></script><meta name="description" content="结论：有钱直接上云服务器 没钱不在乎自定义域名就部署国内 否则只能GitHub


前言花了一个下午折腾多线部署，以及域名解析到最后一场空 老老实实回GitHub :(第二天还是选择部署到服务器了PS：服务器和域名最好买同一家的，备案比较方便
区别
GitHub: 除了慢 什么都好
Gitee &amp;amp; Coding: 速度快 但是如果想要绑定好看的自定义域名 就需要氪金
Gitee: 需要手动更新 无法绑定自定义域名
Coding: 国内节点绑定域名需要备案 (如果不选择国内节点 那就没意义了)


云服务器: 可以考虑 首次配置麻烦点 需要续费和ICP备案

环境准备git + hexohexo博客的本地部署，请参考其他文章本文具体讲本地已经可以运行的博客，如何部署到静态页面+服务器静态页面的部署大同.."><meta name="generator" content="Hexo 5.4.0"></head><body class="is-flex is-flex-direction-column"><header class="header-widget is-flex-shrink-0 is-hidden-mobile"><div class="container is-fullhd is-flex is-justify-content-space-between is-align-items-center is-full-height"><section class="is-hidden-mobile is-flex-shrink-0"><h2><a href="/">insight's blog</a></h2></section><h3 class="is-hidden-mobile is-family-serif is-full-height is-flex is-align-items-center is-flex-shrink-0"><div class="is-full-height" id="postTopic"><p class="is-full-height is-flex-shrink-0 is-flex is-align-items-center is-justify-content-center">Hexo博客多线部署 GitHub Gitee Coding 云服务器</p><p class="is-full-height is-flex-shrink-0 is-flex is-align-items-center is-justify-content-center">点击返回顶部</p></div></h3><aside class="is-flex-shrink-0"><h3 class="is-inline-block"><a href="/">首页</a></h3><h3 class="is-inline-block"><a href="/about">关于</a></h3><h3 class="is-inline-block"><a href="/archives">归档</a></h3></aside></div></header><header class="is-flex header-widget is-flex-shrink-0 is-align-items-center is-justify-content-center is-hidden-tablet"><h3 class="is-inline-block"><a href="/">首页</a></h3><h3 class="is-inline-block"><a href="/about">关于</a></h3><h3 class="is-inline-block"><a href="/archives">归档</a></h3></header><main><main class="container is-max-widescreen content section post-page pt-4 px-4"><div class="columns is-flex-desktop is-justify-content-center is-flex-direction-row-reverse"><div class="column is-3 is-hidden-mobile"><ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%89%8D%E8%A8%80"><span class="toc-text">前言</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%8C%BA%E5%88%AB"><span class="toc-text">区别</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E7%8E%AF%E5%A2%83%E5%87%86%E5%A4%87"><span class="toc-text">环境准备</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%85%B3%E4%BA%8E%E5%85%AC%E9%92%A5"><span class="toc-text">关于公钥</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#%E5%A6%82%E4%BD%95%E7%94%9F%E6%88%90%E5%85%AC%E9%92%A5"><span class="toc-text">如何生成公钥</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E5%A4%9A%E4%B8%AA%E5%85%AC%E9%92%A5%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6"><span class="toc-text">多个公钥的配置文件</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E9%AA%8C%E8%AF%81"><span class="toc-text">验证</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#GitHub"><span class="toc-text">GitHub</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Gitee"><span class="toc-text">Gitee</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Coding"><span class="toc-text">Coding</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8"><span class="toc-text">云服务器</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E6%80%BB%E7%BB%93"><span class="toc-text">总结</span></a></li></ol></div><div class="column is-9"><header class="my-4"></header><h1 class="mt-0 mb-1 is-family-serif" id="postTitle">Hexo博客多线部署 GitHub Gitee Coding 云服务器</h1><time class="has-text-grey" datetime="2021-06-21T04:22:40.292Z">2021-06-21</time><article class="mt-2 post-content"><p>结论：有钱直接上云服务器 没钱不在乎自定义域名就部署国内 否则只能GitHub</p>
<span id="more"></span>

<h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>花了一个下午折腾多线部署，以及域名解析<br>到最后一场空 老老实实回GitHub :(<br>第二天还是选择部署到服务器了<br>PS：服务器和域名最好买同一家的，备案比较方便</p>
<h2 id="区别"><a href="#区别" class="headerlink" title="区别"></a>区别</h2><ul>
<li>GitHub: 除了慢 什么都好</li>
<li>Gitee &amp; Coding: 速度快 但是如果想要绑定好看的自定义域名 就需要氪金<ul>
<li>Gitee: 需要手动更新 无法绑定自定义域名</li>
<li>Coding: 国内节点绑定域名需要备案 (如果不选择国内节点 那就没意义了)</li>
</ul>
</li>
<li>云服务器: 可以考虑 首次配置麻烦点 需要续费和<a target="_blank" rel="noopener" href="https://baike.baidu.com/item/ICP%E5%A4%87%E6%A1%88/1220667?fr=aladdin">ICP备案</a></li>
</ul>
<h2 id="环境准备"><a href="#环境准备" class="headerlink" title="环境准备"></a>环境准备</h2><p><code>git</code> + <code>hexo</code><br>hexo博客的本地部署，请参考其他文章<br>本文具体讲本地已经可以运行的博客，如何部署到静态页面+服务器<br>静态页面的部署大同小异，服务器会多些步骤</p>
<h2 id="关于公钥"><a href="#关于公钥" class="headerlink" title="关于公钥"></a>关于公钥</h2><blockquote>
<p>可以一个公钥部署所有仓库，但是这样不安全，相当于一把钥匙开所有保险库，而且公钥一旦变动，所有仓库都需要更新。<br>因此先介绍多仓库多公钥的使用。</p>
</blockquote>
<h3 id="如何生成公钥"><a href="#如何生成公钥" class="headerlink" title="如何生成公钥"></a>如何生成公钥</h3><p>命令</p>
<pre><code>ssh-keygen [-C comment] [-f output_keyfile] [-t dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa]
</code></pre>
<p>其中<br>-C 添加注释 一般是自己的邮箱<br>-f 指定公钥保存文件 默认保存到<code>C:\Users\username\.ssh\id_xxx.pub</code><br>-t 指定公钥生成算法 一般选择<code>rsa</code>或者<code>dsa</code></p>
<p>除此之外，生成公钥时还可以指定公钥的密码，当你输入命令后，会出现以下提示：</p>
<pre><code>Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Learner/.ssh/id_rsa):
</code></pre>
<p>你可以<strong>直接回车不设置密码</strong>，这样登录服务器或者推送到仓库时，就不用再输入一次密码；<br>也可以设置密码，这样就相当于<code>公钥</code>+<code>密码</code>双重组合保护</p>
<p>举个例子，用自己的邮箱，使用<code>rsa</code>算法生成公钥保存到<code>github_rsa.pub</code></p>
<pre><code>ssh-keygen -t rsa -C &quot;10086@qq.com&quot; -f C:\Users\username\.ssh\github_rsa.pub
</code></pre>
<p>然后我选择不设置密码，一路回车，最后<strong>使用编辑器打开</strong><code>github_rsa.pub</code>文件，查看公钥内容。</p>
<h3 id="多个公钥的配置文件"><a href="#多个公钥的配置文件" class="headerlink" title="多个公钥的配置文件"></a>多个公钥的配置文件</h3><p>文件路径<br><code>C:\Users\username\.ssh\config</code><br><code>username</code>为自己的电脑用户名</p>
<p>如果没有需要新建 注意<strong>没有后缀名</strong><br>需要把ssh整个文件夹的<strong>权限修改成当前用户</strong></p>
<p>文件格式</p>
<pre><code>Host github.com
Hostname github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/***
</code></pre>
<p><code>Host</code>和<code>Hostname</code>替换成自己的服务器IP或者仓库位置<br><code>IdentityFile</code>替换成自己的公钥文件路径</p>
<p>以我的配置文件示例</p>
<pre><code>#github
Host github.com
Hostname github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/git_id_rsa
</code></pre>
<h3 id="验证"><a href="#验证" class="headerlink" title="验证"></a>验证</h3><p>可以输入以下命令进行测试：</p>
<pre><code>ssh -T 用户名@代码仓库网站或者服务器IP
</code></pre>
<p>比如测试GitHub，用户名默认为<code>git</code>，网站为<code>github.com</code></p>
<pre><code>ssh -T git@github.com
Hi insight-21! You&#39;ve successfully authenticated, but GitHub does not provide shell access.
</code></pre>
<p>出现类似内容即为连接成功，如果出现拒绝访问，请检查以上步骤是否正确。</p>
<h2 id="GitHub"><a href="#GitHub" class="headerlink" title="GitHub"></a>GitHub</h2><ol>
<li><p>添加SSH公钥<br>在账户设置页面，左侧选项卡下拉找到<code>SSH and GPG keys</code><br>右侧点击<code>New SSH key</code>，把你的公钥内容复制进去，点击<code>Add SSH key</code>即可</p>
</li>
<li><p>创建仓库<br>新建仓库，名为<code>你的github用户名.github.io</code><br>按照格式来，这样就可以通过仓库名称在网页访问你的Blog<br>注意：<code>Add a README file</code> <code>Add .gitignore</code>这两个不要点，要不然等一下上传文件<strong>可能会因为仓库差异拒绝合并</strong></p>
</li>
<li><p>添加仓库地址到_config.yml<br>创建完成后，在仓库页面，点击绿色的<code>Code</code>按钮，复制仓库的<code>SSH</code>链接，来到你的博客根目录，打开<code>_config.yml</code>，下拉找到如下配置或者自己添加：</p>
<pre><code>deploy:
type: 
repo: 
branch: 
</code></pre>
<p>修改成以下样式：</p>
<pre><code>deploy:
type: git
repo: 
 github: git@github.com:insight-21/insight-21.github.io.git
 gitee: git@gitee.com:insight21/insight21.git
 coding: git@e.coding.net:insight21/insight21-blog/insight21.coding.me.git
branch: master
</code></pre>
<p>其中，repo(仓库)下可以配置多个仓库地址，具体格式为<code>自定义名称: 仓库的SSH地址</code>，随后的<code>Gitee</code>、<code>Coding</code>和<code>服务器</code>也是如此配置。<br>接着执行上传命令</p>
<pre><code>hexo d
</code></pre>
<p>上传完成后，刷新页面查看仓库是否变化</p>
</li>
<li><p>在仓库设置中添加个人域名<br>在仓库页面，点击<code>Setting</code>，下拉找到<code>GitHub Pages</code>，在<code>Custom domain</code>中填写你的域名，并且勾选使用<code>HTTPS</code>协议</p>
</li>
</ol>
<ul>
<li><input checked="" disabled="" type="checkbox"> <code>Enforce HTTPS</code></li>
</ul>
<h2 id="Gitee"><a href="#Gitee" class="headerlink" title="Gitee"></a>Gitee</h2><ol>
<li><p>添加SSH公钥<br><a href="#GitHub">与GitHub的步骤相同</a>，在个人账号设置里添加</p>
</li>
<li><p>创建一个<strong>与用户名相同</strong>的仓库<br><a target="_blank" rel="noopener" href="https://gitee.com/help/articles/4136">官方解释</a><br>这样可以创建一个首页访问地址不带二级目录的静态页面</p>
</li>
<li><p>添加仓库地址到_config.yml<br><a href="#GitHub">与GitHub的步骤相同</a></p>
</li>
<li><p>部署静态页面 以及<strong>记得手动更新</strong><br>在仓库页面，点击<code>服务</code>，选择<code>Gitee Pages</code>，选择<code>强制使用HTTPS</code>，点击<code>启动</code>，等待部署完成，即可点击给出的链接访问博客</p>
</li>
</ol>
<h2 id="Coding"><a href="#Coding" class="headerlink" title="Coding"></a>Coding</h2><blockquote>
<p>Coding自从改版后，很多操作都不同了</p>
</blockquote>
<ol>
<li><p>创建团队、项目和仓库<br>Coding要求你<strong>先创建团队</strong>，然后才能使用各种功能<br>接着创建一个项目，模板选择<code>DevOps</code>，因为只有它能部署静态页面<br>然后在项目页面，左侧选择创建一个代码仓库<br>和前面不同，项目和仓库的名字可以随便取</p>
</li>
<li><p>添加SSH公钥<br><a href="#GitHub">与GitHub的步骤相同</a>，在个人账号设置里添加</p>
</li>
<li><p>添加仓库地址到_config.yml<br><a href="#GitHub">与GitHub的步骤相同</a></p>
</li>
<li><p>部署静态页面<br>在项目页面左侧的<code>持续部署</code>中选择<code>静态网站</code>，需要绑定腾讯云账号，授权、实名认证然后才能部署(因为Coding被马先生全资收购了)<br>这样需要注意一下，<strong>网站的节点选择</strong>，如果选择香港，速度是很慢的，那就失去了部署在国内代码仓库的意义了，因为我们本来就是为了提高速度才来这里的；选择国内节点，绑定个人域名要求域名备案。<br>部署完成后，点击进去可看到静态页面的网站地址。</p>
</li>
</ol>
<h2 id="云服务器"><a href="#云服务器" class="headerlink" title="云服务器"></a>云服务器</h2><ol>
<li><p>添加SSH公钥<br>我的服务器系统是<code>Ubuntu16.04</code>，公钥保存文件路径为<code>当前用户/.ssh/authorized_keys</code>，其他系统应该差不多，如果没有则自行创建一个，然后把公钥保存进去即可。<br>记得远程连接一下服务器，看看登录是不是不需要用户密码了。</p>
</li>
<li><p>安装Git和Nginx<br>首先更新一下软件源：</p>
<pre><code>sudo apt-get update
</code></pre>
<p>然后安装<code>git</code>和<code>nginx</code></p>
<pre><code>sudo apt-get git
sudo apt-get nginx
</code></pre>
<p><code>nginx</code>安装后应该是启动了，命令查看一下：</p>
<pre><code>service nginx status
</code></pre>
<p>如果没有就启动一下：</p>
<pre><code>/etc/init.d/nginx start
</code></pre>
</li>
<li><p>创建仓库和GitHook</p>
<pre><code>sudo mkdir -p /home/insight/gitRepo #新建目录，这是git仓库的位置
sudo mkdir pp /home/insight/www/hexo #用于保存nginx的网站文件
cd /home/insight/gitRepo  #转到git仓库的文件夹
sudo git init --bare blog.git #创建一个名叫blog的仓库
sudo vim /hooks/post-update #创建一个钩子(hook)来实现自动化部署到nginx的网站文件夹
#输入以下内容
rm -rf /home/insight/www/hexo
git clone /home/insight/gitRepo/blog.git /home/insight/www/hexo
</code></pre>
<p>不要忘记给钩子<strong>添加可执行权限</strong></p>
<pre><code>chmod u+x /home/insight/gitRepo/blog.git/hooks/*
</code></pre>
</li>
<li><p>修改Nginx配置文件<br>先说明一下，我的系统上，nginx的配置文件的结构如下</p>
<pre><code>/etc/nginx/nginx.conf #这是自带的(替身使者)默认配置文件
/etc/nginx/conf.d #这是其他的自定义配置文件
/etc/nginx/sites-enabled #软链接到sites-available
/etc/nginx/sites-available #这才是真正的详细的默认配置
</code></pre>
<p>在<code>/etc/nginx/nginx.conf</code>的后半部分可以看到这两句</p>
<pre><code>include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
</code></pre>
<p>说明其实<code>nginx.conf</code>只是单纯的包含其他配置文件，因此需要去<code>/conf.d</code>下自定义配置文件或者去<code>/sites-available</code>中修改默认配置，在这里我为了省事直接修改默认配置：<br>```<br>sudo vim /etc/nginx/sites-available/default</p>
</li>
</ol>
<p>server {<br>  #默认端口可以不修改<br>  listen 80 default_server;<br>  listen [::]:80 default_server;<br>  #根目录 为前文所创建的网站文件夹<br>  root /home/insight/www/hexo<br>}</p>
<pre><code>修改完成后，记得检查一下，看是否有错
</code></pre>
<p>nginx -t<br>nginx: the configuration file /etc/nginx/nginx.conf syntax is ok<br>nginx: configuration file /etc/nginx/nginx.conf test is successful</p>
<pre><code>然后重载一下nginx
</code></pre>
<p>nginx -s reload</p>
<p>```</p>
<ol start="5">
<li>修改服务器安全组策略<br>最后别忘记去服务器控制台，修改安全组策略，开放80端口访问博客。</li>
</ol>
<h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>到此，自己的博客终于搭建起来啦！</p>
<p>没想到一个博客折腾了我两天（吐血</p>
<p>总的来说，部署到云服务器是最好的选择了，速度快，可以绑定域名，顺带练习Linux命令，真是棒极了呢（苦瓜脸</p>
<p>不过要是GitHub能正常使用，谁会闲得去折腾呢（反正我不会</p>
</article><section class="jump-container is-flex is-justify-content-space-between my-6"><!-- em is empty placeholder--><a class="button is-default" href="/archives/3902883597/" title="书单"><i class="iconfont icon-prev mr-2 has-text-grey"></i><span class="has-text-weight-semibold">上一页: 书单</span></a><a class="button is-default" href="/archives/3153460496/" title="常用代码模板"><span class="has-text-weight-semibold">下一页: 常用代码模板</span><i class="iconfont icon-next ml-2 has-text-grey"></i></a></section><article class="mt-6 comment-container"><script async src="https://utteranc.es/client.js" issue-term="pathname" theme="preferred-color-scheme"></script></article></div></div></main></main><footer class="is-flex is-flex-direction-column is-align-items-center is-flex-shrink-0 is-family-serif"><section class="sns-container"><!-- Github--><a title="github" target="_blank" rel="noopener nofollow" href="//github.com/insight-21"><i class="iconfont icon-github"></i></a><!-- Gitee--><a title="gitee" target="_blank" rel="noopener nofollow" href="//gitee.com/insight21"><i class="iconfont icon-gitee"></i></a><!-- Ins--><!-- RSS--><!-- 知乎--><!-- 领英--><!-- 脸书--></section><p><span>Copyright ©</span><span> insight 2021</span></p><div class="is-flex is-justify-content-center is-flex-wrap-wrap"><p>Powered by Hexo &verbar;&nbsp;</p><p class="is-flex is-justify-content-center"><a title="Hexo theme author" target="_blank" rel="noopener" href="//github.com/haojen">Theme by Haojen&nbsp;</a></p><div style="margin-top: 2px"><a class="github-button" title="github-button" target="_blank" rel="noopener" href="https://github.com/haojen/hexo-theme-Claudia" data-color-scheme="no-preference: light; light: light; dark: dark;" data-show-count="true"></a></div></div><div><span></span></div></footer><script async defer src="https://buttons.github.io/buttons.js"></script><script src="/js/post.js"></script></body></html>